<?php

/*
 * Copyright (c) 2011 Joao Paulo Cirino Silva de Novais <joaopaulonovais@gmail.com>
 *
 */

class EscolaControl extends Control {
    /*
     * Esse metodo responsavel por orquestrar as acoes das classes de visao
     * e dados.
     */

    static function executar() {

    	//Objetos que representam os dados (VO)
        $escola        = new EscolaModel();
        $escolaPerfil  = new EscolaPerfilModel();
    	    	
    	//Recuperacao dos valores via $_REQUEST
        $acao = isset($_REQUEST["acao"]) ? $_REQUEST["acao"] : "";
        $tela = isset($_REQUEST["tela"]) ? $_REQUEST["tela"] : "";
        
        //Objeto para manipular a interface
    	$visao = new EscolaView($tela);
        
        if ($_SESSION["cod_escola"]){
            $cod_escola = $_SESSION["cod_escola"];
        } elseif ($_REQUEST["cod_escola"]) {
            $cod_escola = $_REQUEST["cod_escola"]; 
        } else {
        	$cod_escola = $escola->get("cod_escola");
        }
        
        //Upload da imagem
        if(is_uploaded_file($_FILES['img_foto_real']['tmp_name'])) {

        	//Determina o tamanho da imagem
            $img_size = $_FILES['img_foto_real']['size'];
            //Determina o tipo de imagem
            $img_type = $_FILES['img_foto_real']['type'];
            
            $indUpload = true;
            
            if($img_size > (512*1024)) { //tamanho 512Kb
                $indUpload = false;
        		$visao->setMensagem("A imagem não pode ser maior que 128 Kb. Por favor verifique.");
        	} 
        	
        	if ($indUpload) {
  	
    	        $img_foto = file_get_contents($_FILES['img_foto_real']['tmp_name']);
    	        $escola->set("med_logo",$img_foto);
    	        $escola->set("tip_logo",$img_type);
    	        
        	} else {
        		$visao->setMensagem("Não foi possível carregar a imagem. Por favor tente novamente.");
        	}
        }

        //Consulta os perfis para apresentacao das opcoes em tela
        $tipoPerfil = TipoPerfilDAO::consultar(new TipoPerfilModel);
    	//Envia os dados consultados para a interface
        $visao->setTipoPerfil($tipoPerfil);
        //Nao ha estas informacoes na consulta, somente no cadastro
        if ($tela != "Cadastro") {
        	if ($_SESSION["cod_escola"]){
                session_destroy();
        	}
        }
  
        self::load($escola, $_REQUEST);
        switch ($acao) {

            case "Gravar":
            	//Nao permitira alteracao
             	$id = EscolaDAO::inserir($escola);
               	$escola->set("cod_escola", $id);
               	$visao->setMensagem("Escola cadastrada com sucesso!");
               	//Limpa a tela para um novo cadastro
                $visao->editar(new EscolaModel());
                break;
                
            case "Consultar":

                $escolas = EscolaDAO::consultar($escola);
                    
                if ($escolas) {
                    $visao->consultar($escolas);
                } else {
                    $visao->consultar(new EscolaModel());
                }
                break;
                
            case "Visualizar":
            	
                $escola   = EscolaDAO::consultarEscola($escola);
                $perfis   = EscolaPerfilDAO::consultar($escola);
                  
                if ($escola) {
                    $visao->visualizar($escola, $perfis);
                } else {
                    $visao->visualizar(null);
                }
                break;
                
            case "Aprovar": //Apresentar as escolas pendentes para aprovacao

                $escolas = EscolaDAO::consultarSituacao($escola, "P");

                if ($escolas) {
                    $visao->aprovar($escolas);
                } else {
                    $visao->aprovar(new EscolaModel());
                }
                break;
                
            case "Confirmar": //Confirmar a aprovacao das escolas selecionadas

                if($_REQUEST["opt_escola"]) {
                	foreach ($_REQUEST["opt_escola"] as $cod_escola) {
          	            EscolaDAO::aprovar($cod_escola); //Escola APROVADA
                	}
                    $visao->setMensagem("Escola(s) aprovada(s) com sucesso!");
                } else {
                	$visao->setMensagem("Selecione ao menos uma escola.");
                }
                $visao->aprovar(new EscolaModel());
                break;                  
                             
            default: // $acao == "Editar"
            	
            	if ($tela == "Cadastro") {

            		if ($escola->get("cod_escola")) {
            			$escola = EscolaDAO::consultarEscola($escola);
	                } else {
	                    $escola = new EscolaModel();
	                }
	                $visao->editar($escola);
            	} else {
            		$visao->consultar(null);
            	}
        }
    }
}

?>